<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <title>授权与分享演示</title>
        <!-- Bootstrap Core CSS -->
        <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <link href="__CDN__/assets/css/index.css" rel="stylesheet">
        <!-- Plugin CSS -->
        <link href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
        <link href="https://cdn.staticfile.org/simple-line-icons/2.4.1/css/simple-line-icons.min.css" rel="stylesheet">
        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
            <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body id="page-top">

        <nav id="mainNav" class="navbar navbar-default navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-menu">
                        <span class="sr-only">Toggle navigation</span><i class="fa fa-bars"></i>
                    </button>
                    <a class="navbar-brand page-scroll" href="#page-top">授权与分享演示</a>
                </div>

                <div class="collapse navbar-collapse" id="navbar-collapse-menu">
                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="{:url('/')}" target="_blank">{:__('Home')}</a></li>
                        <li><a href="{:url('index/user/index')}" target="_blank">{:__('会员中心')}</a></li>
                    </ul>
                </div>
                <!-- /.navbar-collapse -->
            </div>
            <!-- /.container-fluid -->
        </nav>

        <header>
            <div class="container">
                <div class="row">
                    <div class="col-sm-12">
                        <div class="header-content">
                            <div class="header-content-inner">
                                当你看见这个页面则表示当前以及授权登录成功
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </header>

        <!-- jQuery -->
        <script src=https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js></script>

        <!-- Bootstrap Core JavaScript -->
        <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

        <!-- 微信JSSDK授权 -->
        <script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js" charset="utf-8" async="async"></script>
        <script>
            window.onload = function () {
                if (isWeixin()) {
                    var wxConfig;
                    var currentUrl = window.location.href.split('#')[0];//这里需要注意最好是通过后端渲染，避免出现失败

                    $.ajax({
                        data: {'url': encodeURIComponent(currentUrl)}, //encodeURIComponent解决2次分享签名失败的问题，后端要urldecode
                        type: "POST",
                        dataType   : "json",
                        url: "weixin/index/config",
                        success: function (json) {
                            if (json.code == 1) {
                                wxConfig = json.data;
                                //通过config接口注入权限验证配置，所需资料在后台通过签名算法获取
                                wx.config({
                                    debug: wxConfig.debug,
                                    appId: wxConfig.appId,
                                    timestamp: wxConfig.timestamp,
                                    nonceStr: wxConfig.nonceStr,
                                    signature: wxConfig.signature,
                                    jsApiList: wxConfig.jsApiList
                                });
                                wechatShare.options.isSignature = true;
                                callback && callback(opts, wx);
                            }
                        }
                    });

                    // 成功
                    wx.ready(function(){
                        // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
                        //分享给朋友
                        wx.onMenuShareAppMessage({
                            title: wxConfig.share_title,            // 分享标题
                            desc: wxConfig.share_synopsis,          // 分享描述
                            link: currentUrl,                       // 分享链接
                            imgUrl: 'http://{$_SERVER["HTTP_HOST"]}/' + wxConfig.share_img,   // 分享图标
                            type: '',                               // 分享类型,music、video或link，不填默认为link
                            dataUrl: '',                            // 如果type是music或video，则要提供数据链接，默认为空
                            success: function () {
                                // 用户确认分享后执行的回调函数
                            },
                            cancel: function () {
                                // 用户取消分享后执行的回调函数
                            }
                        });

                        //分享到朋友圈
                        wx.onMenuShareTimeline({
                            title: wxConfig.share_title,            // 分享标题
                            link: currentUrl,                       // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                            imgUrl: 'http://{$_SERVER["HTTP_HOST"]}/' + wxConfig.share_img,   // 分享图标
                            success: function () {
                                // 用户确认分享后执行的回调函数
                            },
                            cancel: function () {
                                // 用户取消分享后执行的回调函数
                            }
                        });
                    });

                    // 失败
                    wx.error(function(res){
                        // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
                        alert(JSON.stringify(res));
                    });
                }
            };
            //判断是否在微信中打开
            function isWeixin() {
                var ua = navigator.userAgent.toLowerCase();
                if (ua.match(/MicroMessenger/i) == "micromessenger") {
                    return true;
                } else {
                    return false;
                }
            }
        </script>
    </body>

</html>
